/*
* @Author: root
* @Date:   2017-11-29 21:07:33
* @Last Modified by:   root
* @Last Modified time: 2017-12-04 22:08:12
*/
'use strict'
require('./index.css');
require('page/common/nav/index.js');
require('page/common/header/index.js');
var _utils            = require('util/util.js');
var _order         	  = require('service/order-service.js');
var _address          = require('service/address-service.js');
var templateProduct   = require('./product-list.string');
var templateAddress   = require('./address-list.string');
var addressModal      = require('./address-modal.js');
var nav = require('page/common/nav/index.js');
var page = {
	data : {
		selectAddressId : null
	},
	init : function(){
		this.onload();
		this.bindEvent();
	},
	onload : function(){
		this.loadAddressList();
		this.loadProductList();
	},
	bindEvent : function(){
		var _this = this;
         //地址的选择
         $(document).on('click','.address-item',function(){
         	$(this).addClass('active').
         	siblings('.address-item').removeClass('active');
         	_this.data.selectedAddressId = $(this).data('id');
         });
         // 订单的提交
          $(document).on('click','.order-submit',function(){
         	var shippingId = _this.data.selectedAddressId;
         	if(shippingId){
         		_order.createOrder({
         			shippingId : shippingId
         		},function(res){
         			window.location.href = './payment.html?orderNumber='+res.orderNo;
         		},function(errMsg){
         		_utils.errorTips(errMsg);		
         		});
         	}else {
         		_utils.errorTips('请选择地址后再提交');
         	}
         });
       //地址的添加
       $(document).on('click','.address-add',function(){
         	addressModal.show({
         		isUpdate  : false,
         		onSuccess : function(){
         			_this.loadAddressList();
         		}
         	})
         });
       //地址的编辑
       $(document).on('click','.address-update',function(e){
        e.stopPropagation();
       	var shippingId = $(this).parents('.address-item').data('id');
       		_address.getAddress(shippingId,function(res){
			addressModal.show({
         		isUpdate  : true,
         		data      : res,
         		onSuccess : function(){
         			_this.loadAddressList();
         		}
         	})
       		},function(errMsg){
       			_utils.errorTips(errMsg);
       		});
         });
        //地址的删除
       $(document).on('click','.address-delete',function(e){
        e.stopPropagation();
          var id = $(this).parents('.address-item').data('id');
          if(window.confirm('确认要删除该地址么？')){
            _address.deleteAddress(id,function(res){
              _this.loadAddressList();
            },function(errMsg){
              _utils.errorTips(errMsg);
            })
          }
         });
             
    },
	//加载地址
	loadAddressList : function(){
			var _this = this;
      $('.address-con').html('<div class="loading"></div>');
			//获取地址列表
			_address.getAddressList(function(res){
        _this.addressFilter(res);
				var addressListHtml = _utils.renderHtml(templateAddress,res);
				$('.address-con').html(addressListHtml);
			},function(errMsg){
				$('.address-con').html('<p class="err-tip">地址加载失败，请刷新后重新</p>');
			});
	},
	//加载商品清单
	loadProductList : function(){
			var _this = this;
      $('.product-con').html('<div class="loading"></div>');
			//获取地址列表
			_order.getProductList(function(res){
				var productListHtml = _utils.renderHtml(templateProduct,res);
				$('.product-con').html(productListHtml);
			},function(errMsg){
				$('.product-con').html('<p class="err-tip">商品信息加载失败，请刷新后重新</p>');
			});
	},
  //处理地址列表选中状态
  addressFilter : function(){
      if(this.data.selectAddressId){
        var selectAddressFlag = false;
        for(var i=0,length = data.list.length;i<length;i++){
          if(data.list[i].id === this.data.selectAddressId){
            data.list[i].isActive = true;
            selectAddressFlag = true;
          };
          //如果以前选中的地址不在列表里，将其删除
          if(!selectedAddressIdFlag){
             this.data.selectAddressId === null; 
          }
        }
      }
    }
	}
$(function(){
	page.init();
});
